/**
 * 格式化日期为指定的字符串格式
 * @param {Date|string|number} date - 日期对象、日期字符串或时间戳
 * @param {string} format - 格式字符串，支持的占位符：
 *                          YYYY - 四位年份
 *                          MM - 两位月份（01-12）
 *                          DD - 两位日期（01-31）
 *                          HH - 两位小时（00-23）
 *                          mm - 两位分钟（00-59）
 *                          ss - 两位秒钟（00-59）
 *                          SSS - 三位毫秒（000-999）
 * @returns {string} 格式化后的日期字符串
 */
export function formatDate(date, format = 'YYYY-MM-DD HH:mm:ss') {
    if (!date) return '';

    // 如果 date 是字符串或数字，转换为 Date 对象
    const d = new Date(date);

    // 检查日期是否有效
    if (isNaN(d.getTime())) {
        console.warn('Invalid date:', date);
        return '';
    }

    const pad = (num) => num.toString().padStart(2, '0');

    const year = d.getFullYear();
    const month = pad(d.getMonth() + 1); // 月份从0开始
    const day = pad(d.getDate());
    const hours = pad(d.getHours());
    const minutes = pad(d.getMinutes());
    const seconds = pad(d.getSeconds());
    const milliseconds = pad(d.getMilliseconds()).slice(-3); // 确保三位

    const replacements = {
        'YYYY': year,
        'MM': month,
        'DD': day,
        'HH': hours,
        'mm': minutes,
        'ss': seconds,
        'SSS': milliseconds,
    };

    return format.replace(/YYYY|MM|DD|HH|mm|ss|SSS/g, (match) => replacements[match]);
}